package org.jsola.hr.service;

import org.jsola.core.Page;
import org.jsola.core.service.IService;
import org.jsola.hr.dao.IEmpSocBackRecordAccountDAO;
import org.jsola.hr.dto.EmpSocBackRecordAccountAddDTO;
import org.jsola.hr.dto.EmpSocBackRecordAccountUpdateDTO;
import org.jsola.hr.entity.EmpSocBackRecordAccountDO;
import org.jsola.hr.query.EmpSocBackRecordAccountQuery;
import org.jsola.hr.vo.EmpSocBackRecordAccountListVO;
import org.jsola.hr.vo.EmpSocBackRecordAccountVO;
import org.jsola.user.core.TokenUser;

import java.util.List;


/**
 * 社保回款账户
 *
 * @author zhr
 */
public interface IEmpSocBackRecordAccountService extends IService<IEmpSocBackRecordAccountDAO, EmpSocBackRecordAccountDO> {

    /**
     * 新增社保回款账户
     * @param empSocBackRecordAccountAddDTO 新增社保回款账户DTO
     * @param tokenUser 当前用户
     * @return 社保回款账户详情信息
     */
    EmpSocBackRecordAccountVO save(EmpSocBackRecordAccountAddDTO empSocBackRecordAccountAddDTO, TokenUser tokenUser);

    /**
     * 修改社保回款账户
     * @param empSocBackRecordAccountUpdateDTO 修改社保回款账户DTO
     * @param tokenUser 当前用户
     * @return 更新数量
     */
    int update(EmpSocBackRecordAccountUpdateDTO empSocBackRecordAccountUpdateDTO, TokenUser tokenUser);


    /**
     * 批量删除社保回款账户，物理删除，更新is_valid字段，从回收站删除
     * @param tokenUser 当前用户
     * @param empSocBackRecordAccountIds 社保回款账户id
     * @return 删除数量
     */
    int deleteByIds(TokenUser tokenUser, String...empSocBackRecordAccountIds);

    /**
     * 根据社保回款账户id查找
     * @param empSocBackRecordAccountId 社保回款账户id
     * @param siteId 所属站点id
     * @return 社保回款账户详情信息
     */
    EmpSocBackRecordAccountVO selectById(String empSocBackRecordAccountId, String siteId);

    /**
     * 查询社保回款账户
     * @param empSocBackRecordAccountQuery 查询条件
     * @param siteId 所属站点id
     * @return 社保回款账户列表信息
     */
    List<EmpSocBackRecordAccountListVO> select(EmpSocBackRecordAccountQuery empSocBackRecordAccountQuery, String siteId);

    /**
    * 查询社保回款账户记录数
    * @param empSocBackRecordAccountQuery 查询条件
    * @param siteId 所属站点id
    * @return 社保回款账户记录数
    */
    int selectCount(EmpSocBackRecordAccountQuery empSocBackRecordAccountQuery, String siteId);

    /**
     * 分页查询社保回款账户
     * @param empSocBackRecordAccountQuery 查询条件
     * @param siteId 所属站点id
     * @return 社保回款账户列表信息
     */
    Page<EmpSocBackRecordAccountListVO> selectPage(EmpSocBackRecordAccountQuery empSocBackRecordAccountQuery, String siteId);


    /**
     * 根据社保回款账户id查找
     * @param empSocBackRecordAccountId 社保回款账户id
     * @param siteId 所属站点id
     * @return 社保回款账户
     */
    EmpSocBackRecordAccountDO selectDOById(String empSocBackRecordAccountId, String siteId);

    /**
     * 查询社保回款账户
     * @param empSocBackRecordAccountQuery 查询条件
     * @param siteId 所属站点id
     * @return 社保回款账户列表
     */
    List<EmpSocBackRecordAccountDO> selectDO(EmpSocBackRecordAccountQuery empSocBackRecordAccountQuery, String siteId);

    /**
     * 根据empid查询社保回款账户 (查询多个返回一个  没有查询到结果返回null)
     * @param empId 员工id
     * @param siteId 所属站点id
     * @return 社保回款账户
     */
    EmpSocBackRecordAccountDO selectDOByEmpId(String empId, String siteId);

}


